1
问题求解智能体介绍
PolyU COMP5511第二讲
00:00

从反应式到规划式

在智能体设计的演进中,我们从反应式智能体,它们根据简单规则将感知直接映射到动作(例如,“如果前方汽车刹车,则启动刹车”),发展到问题求解智能体。反应式智能体操作于即时环境,而问题求解智能体是基于目标的。它们会考虑其动作的未来后果,以找到满足特定目标的动作序列。

  • 反应式智能体: $Action = Function(Percept)$
  • 规划式智能体: $Action\_Sequence = Search(State, Goal)$

原子状态表示

在这个基本层面,智能体使用原子表示。这意味着世界的状态被视为一个黑箱——一个对搜索算法不可见的、没有内部结构的基本节点。智能体仅推理关于:

  • 状态 ($S$): 环境的快照。
  • 动作 ($A$): 状态之间的转换。
  • 目标测试: 检查状态 $s \in S_{goal}$ 的布尔值。

问题求解循环

问题求解智能体遵循一个独特四步循环来导航环境:

  1. 目标制定: 根据当前情况决定要追求哪个目标。
  2. 问题制定: 将现实世界抽象成一个数学模型(状态和动作)。
  3. 搜索: 模拟动作序列以找到最优路径
  4. 执行: 在搜索阶段找到的动作,无需进一步考虑即可执行(假设环境是静态的)。
Python 实现 (agent_types.py)
1
class ReflexAgent:
2
defact (self, percept):
3
# 直接映射:规则 -> 动作
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__ (self):
8
self.seq = [] # 缓冲的动作序列
9
10
defact (self, percept):
11
# 如果我们正在执行中,则继续
12
ifself.seq:
13
returnself.seq.pop (0))
14
15
# 否则,规划(搜索)
16
state = selfupdate_state(percept)
17
goal = selfformulate_goal(state)
18
problem = selfformulate_problem(state, goal)
19
20
# 搜索返回动作列表
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop (0))